iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0

實作是最好的練習,且有概念需要實做、操作才能更了解,我這邊會提供藍圖來做下載,可以當作每天的練習,匯入並且嘗試看看效果,下載我的藍圖,匯入進去操作看看。
匯入方法 Day09 使用藍圖


「啊,怎麼有錯誤...」
「流程怎麼卡住了」

在寫程式時,一開始最怕看到錯誤,但有時候有錯誤訊息是好事,還能從訊息中知道是什麼問題,更怕的是什麼訊息都沒給你,卻不是你要的結果。
那在 Make 中的 error 會怎麼顯示呢,會很明顯地給你一個警告符號,告訴你在哪個地方有錯誤,如下圖,而點開來就會有 error 的訊息,可以從中找出一些錯誤的端倪,例如在前面建立行事曆時,時間要使用標準格式而不能用 YYYY/MM/DD 這種格式,就要去檢查哪裡有錯,最後發現是時間上的格式打錯,就再去修正即可。
那下面的例子是我使用 http API 呼叫我的某一個流程,而這個流程會回傳的 Status 是 400(備註 1),也就是錯誤的部分,所以就會顯示錯誤訊息。
也可以看到下方有 Automatic error handler 他也有做一些教學。
https://ithelp.ithome.com.tw/upload/images/20240925/20169163XAqUwGh18m.png

那這樣我們的流程就會卡住,如果我們的流程是有時候會有錯誤,可能因為使用者輸入錯資訊導致等等,那有一個使用者輸入錯誤後,就導致該場景停下,而不會在接受訊息,這樣很困擾,所以當有錯誤時就要做錯誤處理。
Make 中提供 Break, Commit, Ignore, Resume, Rollback

Make.com(前稱為 Integromat)中,錯誤處理是自動化工作流中的重要部分。當模組在執行過程中出現錯誤時,可以使用不同的錯誤處理選項來決定如何繼續工作流。以下是 BreakCommitIgnoreResume、和 Rollback 的簡介:

  1. Break: 當出現錯誤時,會重新執行流程,可以設定幾分鐘後要執行,若還是錯誤,會將這個錯誤的 bundle 存下來。(通常於 Status 5XX 的錯誤,因為過幾分鐘後伺服器可能就好了,執行起來就沒問題)
  2. Commit: 確認並保存之前模組的所有變更,即使後續發生錯誤,之前的操作也不會被回退(使用在 ACID 模組)。
  3. Ignore: 忽略當前的錯誤並繼續執行下一個模組,錯誤不會影響整個工作流的進程。
  4. Resume: 當錯誤發生後,允許工作流從某個特定的點重新開始運行,這樣可以避免完全從頭執行整個流程。
  5. Rollback: 回退所有之前的操作,恢復到錯誤發生前的狀態,避免不完整或錯誤的數據提交。
功能 簡介 作用場景
Break 中斷工作流的執行,發生錯誤後不再繼續運行後續模組。 當希望錯誤發生時立即停止所有操作。
Commit 保存之前模組的變更,即使後續發生錯誤也不會回退已完成的操作。 確保已成功的操作不會被回退。
Ignore 忽略當前錯誤並繼續執行後續模組。 當某些錯誤不會影響整體流程時使用。
Resume 錯誤發生後允許從某個點重新啟動工作流,而不是從頭開始。 用於長時間運行的工作流,避免重複工作。
Rollback 回退所有之前的操作,恢復到錯誤發生前的狀態,防止不完整數據的提交。 當必須保證數據完整性和一致性時使用。

Break

先講一下如何添加 error handling,將可能會發生錯誤的模組(你想要增加錯誤處理的模組)點擊右鍵,就有一個添加錯誤處理,那就可以添加以上五種的方式。
https://ithelp.ithome.com.tw/upload/images/20240925/20169163MKw5zBjeMb.png

首先我們添加 Break,可以看到可以設定要嘗試幾次,這就是重新嘗試的次數類似 retry 的功能,下方就是幾分鐘後要嘗試。(是說通常 Break 就是直接暫停,但是在 Make 中還有 Retry 的功用,可能常常會搞混...)
但 Break 設置後右上角會出現一個 Messages,這是要在 setting 中做設置。

https://ithelp.ithome.com.tw/upload/images/20240925/201691630CQciBPLqx.png

點擊場景下方的 setting,我們要允許存取未完成的執行結果。

https://ithelp.ithome.com.tw/upload/images/20240925/20169163nXbDjZmypX.png

那執行後當然因為我們的 API 只會傳回錯誤,所以還是沒有執行成功。
回到場景的儀表板,上方有一個 INCOMPLETE EXECUTIONS,這就是未完成的那次結果被存下來在這邊,那我們可以去看有什麼問題,做解決,也不會不知道到底是哪次有問題,這裡就一目瞭然
https://ithelp.ithome.com.tw/upload/images/20240925/20169163FMH8E9EOq2.png

因為 Break 有 Retry 的概念,當然他也可以設置不需要重新開始,直接將錯誤的執行存下來,通常就是會讓他在執行看看會不會成功,最終真的還是沒成功,就真的要做人工排除。通常用於 5XX 的伺服器錯誤,因為伺服器的錯誤通常在是那邊可能有一些斷線的情形,幾分鐘後就排除,或是你使用 API 量太多,例如你大量讀取 google sheet 資料,也會出現 503 的錯誤。

那我們明天再介紹其他的 Error Handling。

備註:
HTTP Status Codes:是網頁伺服器回應客戶端請求時返回的數字代碼,用於表示請求的結果。這些狀態碼按照範圍分成五大類:

  1. 1xx (資訊回應類): 請求已被接收,伺服器處理中。
  2. 2xx (成功類): 請求成功被處理。
  3. 3xx (重新導向類): 客戶端需要進一步的操作才能完成請求。
  4. 4xx (客戶端錯誤類): 請求發生錯誤,通常是客戶端的問題。
  5. 5xx (伺服器錯誤類): 伺服器在處理請求時發生錯誤。

以下是一些常見的 HTTP 狀態碼及其簡介:

狀態碼 類別 描述
100 1xx 繼續:請求尚未完成,請繼續發送。
200 2xx 成功:請求成功並已回應。
400 4xx 錯誤請求:請求無效,伺服器無法處理。
404 4xx 找不到:伺服器找不到請求的資源。
500 5xx 伺服器錯誤:伺服器遇到錯誤,無法完成請求。

若對 MAKE 自動化 有興趣的歡迎使用以下連結註冊,可以直接得到免費一個月的 pro 會員資格(不需要綁定信用卡等,只需使用該連結註冊而已)
免費一個月 pro 會員


上一篇
Day19 Webhook
下一篇
Day21 錯誤處理(2)
系列文
自動化你的每一天 - 流程自動化 - Make.com 工作流程自動化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言